import axios from 'axios'
import { Dialog } from 'vant'
import type { AxiosRequestConfig } from 'axios'



// // 
// - [接口文档地址](http://47.94.148.165:3001/apidoc)
// - [接口地址](http://47.94.148.165:3001/api)

//创建axios的实例
const instance  = axios.create({
baseURL : 'http://47.94.148.165:3001/api',
timeout:5000

})

interface myAxiosRequestConfig extends AxiosRequestConfig {
  headers: { token?: string | null }
}
  
  // 配置请求拦截器
  instance.interceptors.request.use((config: AxiosRequestConfig) => {
    // 所有的请求都要经过我
  
    // 判断是 获取用户信息
    if (config.url === '/user/info') {
      // ((config.headers as unknown) as myAxiosRequestConfig).token = window.localStorage.getItem('token')
      (config as myAxiosRequestConfig).headers.token = window.localStorage.getItem('token')
    }
  
    // 判断是 购物车相关
    // 所有的购物车相关接口都是 /cart/xxxx
    // 只要判断是以 /cart 开头的, 就可以
    // 每一个购物车相关的接口都要判断 token 是否真实有效
    // 可以在响应拦截器内做判断
    if (/^\/cart/.test(config.url as string)) {
      // 拿到 token 进行添加
      // (config.headers as AxiosRequestConfig<AxiosHeaders>).token = window.localStorage.getItem('token')
      (config as myAxiosRequestConfig).headers.token = window.localStorage.getItem('token')
    }
  
    // 查询所有订单
    if (config.url === '/user/orderlist') {
      // (config.headers as AxiosRequestConfig<AxiosHeaders>).token = window.localStorage.getItem('token')
      (config as myAxiosRequestConfig).headers.token = window.localStorage.getItem('token')
    }
  
    // 判断是 订单相关
  
    return config
  })
    

  
  
// 配置响应拦截器
instance.interceptors.response.use(
  response => {

    // 判断如果返回的内容的 code 为 '10119'
    // 那么就表示无效 token
    // 做出提示
    if (response.data.code === '10119') {
      Dialog({
        title: '提示',
        message: '您登录状态有问题, 请重新登录'
        //  $router.push({path: '/login'  })  
      })

      return { code: 0 }
    }

    return response.data
  },
  err => {
    Dialog.alert({ title: '网络错误', message: '网络不给力, 稍后再来' })
  }
)

//导出实例
export default instance 

